package editorsvg.editor.herramientas;

import editorsvg.editor.cursores.Cursores;
import editorsvg.editor.vista.EditorDocumento;
import java.awt.Cursor;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.event.MouseEvent;

/**
 * Herramienta para hacer traveling sobre la pagina (desplazar el punto de vista).
 * @author Jorge Berjano
 */
public class HerramientaTraveling extends HerramientaBase {
    private Point puntoBase;
    private EditorDocumento editor;
    
    public HerramientaTraveling(EditorDocumento editor) {
        this.editor = editor;
    }

    @Override
    public boolean pulsado(MouseEvent e) {
        puntoBase = e.getPoint();
        editor.setForzarRepintadoOpcional(true);
        return false;
    }

    @Override
    public boolean arrastrando(MouseEvent e) {        
        desplazar(e.getPoint(), true);
        return true;
    }
    
    @Override
    public boolean liberado(MouseEvent e) {
        editor.setForzarRepintadoOpcional(false);
        desplazar(e.getPoint(), false);
        return true;
    }
    
    private void desplazar(Point puntoActual, boolean ajustando) {
        int dx = puntoBase.x - puntoActual.x;
        int dy = puntoBase.y - puntoActual.y;
        editor.desplazarVistaPixeles(dx, dy, ajustando);
        // Nota: El punto base no varia ya que la vista se desplaza
    }

    @Override
    public Cursor getCursor() {
        return Cursores.MANO.getCursor();
    }

    @Override
    public void pintarEnPixeles(Graphics2D graphics) {        
    }

}
